[스프링부트] [JAVA] [입문] 2.3 API : @ResponseBody
업데이트:
Spring으로 웹을 개발한다는 건 크게 3가지 정도로 나눌 수 있다.
첫번째로 정적 컨텐츠
두번째로 MVC와 템플릿엔진
세번째로 API
오늘은 API에 대해 간단하게 알아보고 공부해보도록 하겠다!
@ResponseBody
우리가 일반적으로 컨트롤러를 만들어 사용할 때, viewResolver에 의해 return 값으로 반환하는 문자열은 view 페이지를 의미한다.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
위 코드에서는 hello 라는 페이지를 return 하는것이다.
@ResponseBody 문자 반환
그런데 만약 View페이지가 아닌 문자열 그대로를 return하고 싶은경우에는 @ResponseBody
를 사용하면 된다.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello" + name;
}
@ResponseBody 어노테이션을 달아준 코드이다.
name=Spring HAHA 라고 지정하고 실행을 하면 return 값인 helloSpring HAHA 가 그대로 출력되는것을 볼 수 있다.
- @ResponseBody 를 사용하면 viewResolver 를 사용하지 않는다.
- 대신 HTTP의 BODY에 문자내용을 직접 반환 한다.
@ResponseBody 객체 반환
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
// json 방식으로 key-value값을 전달
// 최근에는 거의 json방식을 많이 사용
Hello hello = new Hello();
hello.setName(name);
return hello;
}
// 객체생성
static class Hello{
private String name;
// getter setter 단축키 : Alt+Insert
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
결과 : [localhost:8080/hello-api?name=Spring HAHA
]
@ResponseBody 태그를 사용해서 객체를 담아준뒤 반환해준 결과이다. 객체를 반환하면 json 방식으로 값을 반환해주는데 <key,value> 구조라고 생각하면 된다. 최근에는 거의 json 방식을 사용해서 객체를 반환한다!!
ResponseBody 동작 환경
- 컨트롤러에서 viewResolver 대신에 HttpMessageConverter 가 동작한다.
- 기본 문자 처리 :
StringHttpMessageConverter
- 기본 객체 처리 :
MappingJackson2HttpMessageConverter
- byte 처리 등등 기타 여러 HttpMessageConverter 가 기본으로 등록되어 있다.
- 일단 이런게 있다 정도만 알아두고 넘어가자!
여기까지 [스프링부트] [JAVA] [입문] 4. API 포스팅을 마치겠습니다.
댓글남기기